home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / filt-ele.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  3.4 KB  |  80 lines

  1. 10  PRINT: PRINT: PRINT "MODERN FILTER DESIGN PROGRAM": DIM TP(20)
  2. 15  PRINT:PRINT, "k2uyh ------ modified for ibm pc ------ wa2tif":PRINT:
  3. 20  PRINT: INPUT "LOW PASS (L), HIGH PASS (H), BAND PASS (B)"; Q$
  4. 30  INPUT "FREQUENCY IN HZ, KHZ OR MHZ"; A$: KF=1: P2=PI*2
  5. 40  IF A$="KHZ" THEN KF=1000 ELSE IF A$="MHZ" THEN KF=1E+06
  6. 50  IF Q$="L" OR Q$="H" THEN 60 ELSE IF Q$="B" THEN 120 ELSE 20
  7. 60  PRINT: INPUT "CUT OFF FREQ "; FC: FC=FC*KF
  8. 70  INPUT "STOP BAND FREQ"; FS: FS=FS*KF
  9. 80  INPUT "STOP BAND ATTENUATION IN DB"; AS
  10. 90  IF Q$="L" THEN NS=FS/FC ELSE NS=FC/FS
  11. 100  PRINT "NORMALIZED CUT OFF FREQ"; NS: GOTO 190
  12. 110  REM BANDPASS FILTER
  13. 120  PRINT: INPUT "CENTER FREQUENCY ="; F0: F0=F0*KF: W0=P2*F0
  14. 130  INPUT "BANDPASS WIDTH ="; FP: FP=FP*KF: WP=P2*FP
  15. 140  QL=F0/FP: INPUT "START OF STOP BAND ="; FS: FS=FS*KF
  16. 150  INPUT "STOP BAND ATTENUATION IN DB"; AS
  17. 160  NS=2*ABS(F0-FS)/FP
  18. 170  PRINT: PRINT "QL ="; QL, "NORM FREQ RATIO ="; NS
  19. 180  REM CALC OF # OF POLES
  20. 190  PRINT: INPUT "BUTTERWORTH (B) OR TCHEBYCHEFF (T)"; B$: N=0
  21. 200  IF B$="T" THEN 220 ELSE IF B$<>"B" THEN 190
  22. 210  N=N+1: AT=10*LOG10(1+NS^(2*N)): IF AT>AS THEN 250 ELSE 210
  23. 220  INPUT "RIPPLE IN DB"; R: TP(0)=1: TP(1)=NS: RE=10^(R/10)-1
  24. 230  N=N+1: TP(N+1)=2*NS*TP(N)-TP(N-1)
  25. 240  AT=10*LOG10(1+RE*TP(N+1)^2): IF AT>AS THEN 250 ELSE 230
  26. 250  PRINT "NUMBER OF SECTION REQUIRED"; N: P=N: RP=R
  27. 260  PRINT: INPUT "WANT TO TRY DIFFERENT N (Y/N)"; D$
  28. 270  IF D$="Y" THEN INPUT "WANT TO TRY DIFFERENT ATTN (Y/N)"; A$ ELSE GOTO 300
  29. 280  IF A$="Y" THEN INPUT "NEW ATT IN DB"; AS: N=0: GOTO 200
  30. 290  INPUT "NEW N"; N: PRINT: P=N
  31. 300  REM LOAD BUTTERWORTH DATA
  32. 310  DIM B(10,5), T(7,5,5)
  33. 320  FOR N=1 TO 10: Q=(-1)^N: IF Q<0 THEN AB=INT(N/2)+1 ELSE AB=N/2
  34. 330  FOR I=1 TO AB: READ B(N,I): NEXT: NEXT
  35. 340  REM LOAD TCHEBYCHEFF DATA
  36. 350  FOR R=1 TO 7: FOR N=1 TO 5: FOR I=1 TO N
  37. 360  READ T(R,N,I): NEXT: NEXT: NEXT
  38. 370  IF B$="B" THEN 520
  39. 380  Q=(-1)^P: IF P>10 THEN PRINT "LARGEST VALUE 10": GOTO 20
  40. 390  IF Q>0 THEN P=P+1: PRINT "MUST USE ODD # FOR BAL TCH: P="; P
  41. 400  IF RP <=0.01 THEN R=1: RP=0.01: GOTO 480
  42. 410  IF RP <=0.1 THEN R=2: RP=0.1: GOTO 480
  43. 420  IF RP <=0.2 THEN R=3: RP=0.2: GOTO 480
  44. 430  IF RP <=0.5 THEN R=4: RP=0.5: GOTO 480
  45. 440  IF RP <=1 THEN R=5: RP=1: GOTO 480
  46. 450  IF RP <=2 THEN R=6: RP=2: GOTO 480
  47. 460  IF RP <=3 THEN R=7: RP=3: GOTO 480
  48. 470  PRINT "RIPPLE EXCEEDS MAXIMUN LIMIT": GOTO 20
  49. 480  PRINT: PRINT "# POLES"; "="; P, "RIPPLE"; "="; RP: PRINT
  50. 490  N=(P+1)/2: FOR J=1 TO P: IF J<=N THEN I=J ELSE I=P+1-J
  51. 500  PRINT"ELEMENT"; J; "="; T(R,N,I): NEXT: GOTO 780
  52. 510  REM BUTTERWORTH CALC
  53. 520  IF P>10 THEN PRINT "LARGEST VALUE 10": GOTO 20
  54. 530  Q=(-1)^P: IF Q<0 THEN AB=INT(P/2)+1 ELSE AB=P/2
  55. 540  FOR J=1 TO P: IF J<=AB THEN I=J ELSE I=P+1-J
  56. 550  PRINT "ELEMENT"; J; "="; B(P,I): NEXT
  57. 560  PRINT: INPUT "WANT TO CONTINUE (Y/N)"; Q$
  58. 570  END: REM DATA FOR BUTTERWORTH
  59. 580  DATA 2,1.414,1,2,.765,1.848,.618,1.618,2,.518,1.414,1.932
  60. 590  DATA .445,1.247,1.802,2,.390,1.111,1.663,1.962,.347,1
  61. 600  IF Q$="Y" THEN 260
  62. 610  DATA 1.532,1.879,2,.313,.908,1.414,1.782,1.975
  63. 620  REM DATA FOR TCHEBYCHEFF
  64. 630  DATA .096,.6291,.9702,.7563,1.3049,1.5773,.7969,1.394
  65. 640  DATA 1.7481,1.6331,.8144,1.427,1.8043,1.7125,1.9057
  66. 650  DATA .3052,1.0315,1.1474,1.1468,1.3712,1.9750,1.1811
  67. 660  DATA 1.4228,2.0966,1.5733,1.1956,1.4425,2.1345,1.6167
  68. 670  DATA 2.2053,.4342,1.2275,1.1525,1.3394,1.3370,2.1660
  69. 680  DATA 1.3722,1.3781,2.2756,1.5001,1.386,1.3938,2.3093
  70. 690  DATA 1.5340,2.3728,.6986,1.5963,1.0967,1.7058,1.2296
  71. 700  DATA 2.5408,1.7372,1.2583,2.6381,1.3444,1.7504,1.2690
  72. 710  DATA 2.6678,1.3673,2.7239,1.0177,2.0236,.9941,2.1349
  73. 720  DATA 1.0911,3.0009,2.1664,1.1116,3.0934,1.1736,2.1797
  74. 730  DATA 1.1192,3.1215,1.1897,3.1747,1.5296,2.7107,.8327
  75. 740  DATA 2.8310,.8985,3.7827,2.8655,.9119,3.8780,.9535,2.8790
  76. 750  DATA .9171,3.9056,.9643,3.9598,1.9953,3.3487,.7117,3.4817
  77. 760  DATA .7618,4.5381,3.5182,.7723,4.6386,.8039,3.5340,.7760
  78. 770  DATA 4.6692,.8118,4.7272
  79. 780  END
  80.